package cn.semcorp.zhuhaizj.mapper;

import cn.semcorp.zhuhaizj.pojo.dto.*;
import cn.semcorp.zhuhaizj.pojo.entity.SlurrySolidEntity;
import cn.semcorp.zhuhaizj.pojo.entity.UtilizationEntityDay;
import cn.semcorp.zhuhaizj.pojo.entity.UtilizationEntityShift;
import cn.semcorp.zhuhaizj.pojo.entity.WorkshopEntity;
import cn.semcorp.zhuhaizj.pojo.vo.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UtilizationMapper {

    // 导入制浆领用数据  报废
    int insertPulpingDate(List<PulpingDateDTO> pulpingDateEntityList);

    // 导入涂布产出数据 报废
    int insertCoatingDate(List<CoatingDateDTO> coatingDateDTOList);

    // 导入培训课程
    int insertClassDate(List<ClassDataDTO> coatingDateDTOList);

    // 根据日期、机台查询涂布日产出数据
    List<UtilizationShiftVO> selectShift(String date, String machineName);

    // 辅助周次数据  查询所有的涂布产出数据
    List<SelectCoatingDataVO> selectAllCoatingData();

    // 根据日期、机台查询涂布月产出数据
    List<SelectCoatingDataVO> selectCoatingForActualInvestmentAreaMonth(String startDate, String endDate, String machineName);

    // 根据日期、机台查询制浆领用数据
    List<SelectPulpingDataVO> selectPulpingForPacking(String date,String machineName,String classType);


    // 根据浆料名称查询固含量
    SlurrySolidContentVO selectSolidContentBySlurryName(String slurryName);

    // 查询所有浆料固含量
    List<SlurrySolidContentVO> selectSolidContentAll();

    // 根据机台名称查询涂布车间
    String selectWorkshopByMachine(String machineName);

    // 导入日次利用率数据
    int insertUtilizationDay(List<UtilizationEntityDay> entityDays);

    // 导入班次利用率数据
    int insertUtilizationShift(List<UtilizationEntityShift> entityShifts);

    // 根据机台名称查询每日利用率数据
    List<UtilizationDayVO> selectUtilizationDayByMachineName(String machineName);

    // 根据时间范围查询每日利用率
    List<UtilizationDayVO> selectUtilizationDayByDateRang(ClickQueryDTO dto);
    List<UtilizationShiftVO> selectUtilizationShiftByDateRang(ClickQueryDTO dto);

    /**
     * 这
     * @return
     */
    List<MachineSortVO> selectMachineName();
    List<MachineSortVO> selectMachineNameByWorkshop(String workshop);

    // 根据班次查询每日利用率数据
    List<UtilizationShiftVO> selectUtilizationShift(String date);

    // 查询日次每日利用率数据
    List<UtilizationDayVO> selectUtilizationDay(String date);

    // 查询车间列表
    List<WorkshopVO> selectWorkshopList();

    // 查询日次表中低利用率数据
    List<SelectLowUtilizationVO> selectLowUtilizationDay(String date,String eligibilityYES);
    List<SelectUtilizationVO> selectLowUtilizationDay2(String week);

    // 导入日低利用率机台数据
    int insertLowUtilizationDay(List<SelectLowUtilizationVO> lowUtilizationVOList);

    // 查询日率利用率机台
    List<SelectLowUtilizationVO> selectLowUtilizationDays(String date);

    // 根据机台名称查询车间责任人
    String selectDutyByMachineName(String machineName);

    // 更新低利用率责任人
    int updateLowUtilizationDay(String duty,String machineName);

    // 修改低利用率原因和措施
    int updateLowUtilizationDayResultMeasure(int id,String result,String measureResult);

    // 根据id查询低利用率机台信息
    SelectLowUtilizationVO selectLowUtilizationById(String id);

    // 根据日期,涂布车间查询低利用率数据
    List<SelectLowUtilizationVO> selectLowUtilizationDateByWorkshopDate(String date,String workshop);

    // 初始化查询日利用率折线数据   前天/前十天/机台名称
    List<SelectUtilizationTenDaySQLVO> initUtilizationTenDayFig(String beforeDate, String beforeTenDate, String machineName);

    // 初始化查询周利用率折线数据
    // 根据机台,四周次查询日利用率周数据
    List<UtilizationDayVO> selectUtilizationDayByMachineAndWeekNumber(String machineName,Integer week);

    List<UtilizationShiftVO> queryAllMonthModelUtilization(String slurryModel,String yearMonth);
    List<UtilizationShiftVO> queryAllWeekModelUtilization(String slurryModel,String week);

    // 根据类型查询制浆领用数据
    List<SelectPulpingDataVO> selectPulpingForPackingByModel(String model,String start,String end);

    // 查询10天 班次产出数据 -车间图表
    List<UtilizationShiftVO> selectShitUtilizationTen(String start,String end);

    // 根据车间查询 - 图表
    List<UtilizationDayVO> initUtilizationTenDayFigByWorkshop(String beforeNowDate, String beforeTenNowDate, String workshop);

    // 根据车间查询 - 图表
    List<UtilizationDayVO> selectUtilizationDayByWorkshopAndWeekNumber(String workshop, Integer weekNumber);



    /** 0 辅助类
     * 按涂布车间查询机台
     */
    List<String> selectMachineByWorkshop(String workshop);

    /** 0 辅助类
     * 查询所有的浆料固含量
     */
    List<SlurrySolidEntity> selectAllSolid();
    String selectAllSolidBySlurryName(String slurryName);

    /** 0 辅助类
     * 插叙所有的机台-车间
     */
    List<WorkshopEntity> selectAllWorkshop();

    /** 1 - 1
     * 查询近十天的综合日利用率 - 日利用率表
     * @param start,end
     * @return
     */
    List<SelectAllUtilizationVO> queryAllUtilizationDay(String start,String end);

    /** 1 - 2
     * 查询涂布车间综合日利用率
     * @param date
     * @return
     */
    List<SelectAllUtilizationVO> queryAllUtilizationDayOrderByWorkshopByDate(String date);

    /** 1 - 3
     * 查询涂布机台综合日利用率
     * @param workshop
     * @param date
     * @return
     */
    List<SelectAllUtilizationVO> queryAllMachineUtilizationByWorkshopAndDate(String workshop, String date);



    /** 2 - 1
     * 查询近六周的综合周利用率 - 日利用率表
     * @param week
     */
    List<SelectAllUtilizationVO> queryAllUtilizationWeek(String week);
    List<SelectAllUtilizationVO> queryAllUtilizationWeekByWorkshop(String week,String workshop,String state);
    List<SelectAllUtilizationVO> queryAllUtilizationWeekByMachine(String week,String machine,String state);


    /** 2 - 2
     * 查询涂布综合周车间利用率 - 日利用率表
     * @param week
     * @return
     */
    List<SelectAllUtilizationVO> queryAllWeekWorkshopUtilization(String week);

    /** 2 - 3
     * 查询涂布综合机台周利用率 - 日利用率表
     * @param week
     * @param workshop
     * @return
     */
    List<SelectAllUtilizationVO> queryAllMachineUtilizationByWorkshopAndWeek(String week, String workshop);


    /** 3 - 1
     * 查询近六个月的综合月利用率  - 日利用率表
     * @param firstDay
     * @param lastDay
     */
    List<SelectAllUtilizationVO> queryAllUtilizationMonth(String firstDay, String lastDay);
    List<SelectAllUtilizationVO> queryAllUtilizationMonthByWorkshop(String firstDay, String lastDay,String workshop,String state);
    List<SelectAllUtilizationVO> queryAllUtilizationMonthByMachine(String firstDay, String lastDay,String machine,String state);

    /**
     * 3 - 2
     * 查询涂布综合车间月利用率 - 日利用率表
     * @param firstDay
     * @param lastDay
     * @return
     */
    List<SelectAllUtilizationVO> queryAllUtilizationMonthWorkshop(String firstDay, String lastDay);

    /**
     * 3 - 3
     * 查询涂布综合车间月利用率 - 日利用率表
     * @param firstDay
     * @param lastDay
     * @return
     */
    List<SelectAllUtilizationVO> queryAllUtilizationMonthMachineByDateAndWorkshop(String firstDay, String lastDay,String workshop);

    /**
     * 机台改善 - 初始化 - 查询列表
     * @param beforeNowDate
     * @return
     */
    List<SelectLowUtilizationVO> loadSelectMeasureDay(String beforeNowDate);

    /**
     * 机台改善 - 时间查询
     */
    List<SelectLowUtilizationVO> queryMeasureByRangTime(QueryMeasureDTO dto);

    /**
     * 基础 - 查询涂布产出
     * @param date
     * @param machineName
     * @return
     */
    List<SelectCoatingDataVO> selectShiftOfCoating(String date, String machineName);

    /**
     * 单系列查询 - 根据时间、车间范围查询 - 日利用率
     */
    List<SelectAllUtilizationVO> querySeriesWorkshopUtilizationByTimeRang(String start,String end,String workshop,String state);

    /**
     * 单系列查询 - 根据时间、时间范围查询 - 日利用率
     */
    List<SelectAllUtilizationVO> querySeriesMachineUtilizationByTimeRang(String start, String end, String machine);

    /** 0 辅助
     * 查询浆料固含量列表
     * @return
     */
    List<SlurrySolidContentVO> selectSolidContent();

    /**
     * 趋势图 - 损耗损耗
     * @param start,end,machine
     * @return
     */
    List<SelectMachineLossVO> selectLossByMachine(String start,String end,String machine);

    /**
     * 源查询 - 初始化
     * @param date
     */
    List<SelectCoatingBasicVO> querySelectBeginBasicVO(String date);

    List<SelectPulpingBasicVO> queryBasicByPulpingRangAndModel(String start, String end);

    List<SelectCoatingBasicVO> queryBasicByCoatingRangAndModel(String start, String end);


    void updateCoating(List<CoatingDTO> list);

    void updatePulping(List<PulpingDTO> list);

    List<String> selectCoatingWorkshop();

    void addSolids(String slurryName, String model, String solids);
}
